﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using Entidades;
/*
 * Oct 6 2013
 * se creo la clase  MySqlUsuarioDAO para manejar todo lo referente con la entrada y salida de datos
 * de la DB.
 * con solo 2 metodos para insertar,getTodos y actualizar usuarios
 * **************************************************************************************************
 */
namespace Datos
{
    public class MySqlUsuarioDAO:IUsuario
    {
        MySqlConnection conector = new MySqlConnection();
        string connectionString;
        public string s;

        public void iniciarConexion()
        {
            try
            {
                connectionString = "Server=127.0.0.1;Database=justime;Uid=root; pwd=root;";
                conector.ConnectionString = connectionString;
                conector.Open();
                s = "La conexion se ha realizado con exito";

            }
            catch
            {
                s = "Ocurrio un error al intentar conectarse";
            }

        }

        public void Conectar()
        {
            iniciarConexion();
        }

        public void Desconectar()
        {
            conector.Close();
        }

        public void Insertar(Entidades.Usuario u)
        {
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "insert into usuario Values(?Cedula,?pnombre,?snombre,?papellido,?sapellido,?clave,?direccion,?email,?telefono,?calificacion)";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.Parameters.AddWithValue("?pnombre", u.PNombre);
            cmd.Parameters.AddWithValue("?snombre", u.SNombre);
            cmd.Parameters.AddWithValue("?papellido", u.PApellido);
            cmd.Parameters.AddWithValue("?sapellido", u.SApellido);
            cmd.Parameters.AddWithValue("?clave", u.Clave);
            cmd.Parameters.AddWithValue("?direccion", u.Direccion);
            cmd.Parameters.AddWithValue("?email", u.Email);
            cmd.Parameters.AddWithValue("?telefono", u.telefono);
            cmd.Parameters.AddWithValue("?calificacion", u.Calificacion);

            s = cmd.CommandText;
            cmd.ExecuteNonQuery();
        }

        public List<Entidades.Usuario> getTodos()
        {
            List<Usuario> lst = new List<Usuario>();
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "Select * From usuario";
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                Usuario c = new Usuario();
                c.Cedula = reader["cedula"].ToString();
                c.SNombre = reader["snombre"].ToString();
                c.PNombre = reader["pnombre"].ToString();
                c.PApellido = reader["papellido"].ToString();
                c.SApellido = reader["sapellido"].ToString();
                c.Clave = reader["clave"].ToString();
                c.Direccion = reader["direccion"].ToString();
                c.Email = reader["email"].ToString();
                c.telefono = reader["telefono"].ToString();
                c.Calificacion=reader["calificacion"].ToString();
                lst.Add(c);
            }
            return lst;
        }

        public void actualizar(Usuario u)
        {
            MySqlCommand cmd = conector.CreateCommand();
            cmd.CommandText = "UPDATE usuario SET pnombre=?pnombre,snombre=?snombre,papellido=?papellido,sapellido=?sapellido,clave=?clave,direccion=?direccion,email=?email,telefono=?telefono,calificacion=?calificacion WHERE cedula=?Cedula;";
            cmd.Parameters.AddWithValue("?Cedula", u.Cedula);
            cmd.Parameters.AddWithValue("?pnombre", u.PNombre);
            cmd.Parameters.AddWithValue("?snombre", u.SNombre);
            cmd.Parameters.AddWithValue("?papellido", u.PApellido);
            cmd.Parameters.AddWithValue("?sapellido", u.SApellido);
            cmd.Parameters.AddWithValue("?clave", u.Clave);
            cmd.Parameters.AddWithValue("?direccion", u.Direccion);
            cmd.Parameters.AddWithValue("?email", u.Email);
            cmd.Parameters.AddWithValue("?telefono", u.telefono);
            cmd.Parameters.AddWithValue("?calificacion", u.Calificacion);
            cmd.ExecuteNonQuery();
        }
    }
}
